package com.collections;

import com.google.common.collect.ClassToInstanceMap;
import com.google.common.collect.MutableClassToInstanceMap;
import org.junit.Test;

import java.math.BigDecimal;

public class ClassToInstanceMapDemo {


    /**
     *  ClassToInstanceMap是一种特殊的Map：它的键是类型，而值是符合键所指类型的对象
     */
    @Test
    public void classToInstanceMapTest(){
        //可存放所有数字类型的map
        ClassToInstanceMap<Number> numberDefaults= MutableClassToInstanceMap.create();
        numberDefaults.putInstance(Integer.class, 1);
        numberDefaults.putInstance(Double.class, 1.00);
        numberDefaults.putInstance(BigDecimal.class, new BigDecimal("52"));
        numberDefaults.put(Integer.class, 2);
        numberDefaults.replace(Integer.class, 3); //修改
        numberDefaults.getInstance(Integer.class); //获取value 3
        //通过传入新值和旧值计算,修改旧值,例: 将Integer,class的值+3
        numberDefaults.merge(Integer.class,2,(x,y)->x.intValue()+y.intValue());
        numberDefaults.forEach((x,y)-> System.out.println(x+","+y));
        /**
         * class java.lang.Double,1.0
         * class java.math.BigDecimal,52
         * class java.lang.Integer,5
         */


    }
}
